<?php

class Intervinientes extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->datosusuario = $this->authentication->getDataLogged();
        $this->datoscausa = $this->session->userdata('causa');
        $this->load->model('m_demandante', 'demandante');
        $this->load->model('m_causa_x_demandante', 'causa_x_demandante');
        $this->load->model('m_demandado_no_medico', 'demandado_no_medico');
        $this->load->model('m_causa_x_no_medico', 'causa_x_no_medico');
        $this->load->model('m_especialidad_no_medica', 'especialidad_no_medica');
        $this->load->model('m_establecimiento', 'establecimiento');
        $this->load->model('m_causa_x_establecimiento', 'causa_x_establecimiento');
        $this->load->model('m_abogado_demandante', 'abogado_demandante');
        $this->load->model('m_causa_x_abogado_demandante', 'causa_x_abogado_demandante');
        $this->load->model('m_estudio_demandante', 'estudio_demandante');
        $this->load->model('m_demandado', 'demandado');
        $this->load->model('m_demandado_x_estudio', 'demandado_x_estudio');
        $this->load->model('m_medico', 'medico');
        $this->load->model('m_medico_x_especialidad', 'medico_x_especialidad');
        $this->load->model('m_especialidad', 'especialidad');
        $this->load->model('m_seguro', 'seguro');
        $this->load->model('m_estudio', 'estudio');

        $this->authentication->puedeVerCausa($this->datoscausa['id']);
    }

    /**
     * Listado de las intervinientes.
     *
     * @return void
     */
    function index() {
        $data = array(
            'titulo' => 'Lista de Intervinientes',
            'datosusuario' => $this->datosusuario,
            'datoscausa' => $this->datoscausa,
            'demandantes' => $this->demandante->getListPorCausaId($this->datoscausa['id']),
            'abogados_demandantes' => $this->abogado_demandante->getListPorCausaId($this->datoscausa['id']),
            'demandados_no_medicos' => $this->demandado_no_medico->getListPorCausaId($this->datoscausa['id']),
            'establecimientos' => $this->establecimiento->getListPorCausaId($this->datoscausa['id']),
            'demandados' => $this->demandado->getListPorCausaId($this->datoscausa['id']),
            'tipoDoc' => getListTipoDoc(),
            'seleccionar' => 'causas',
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('intervinientes/index', $data);
        $this->load->view('templates/footer');
    }

    /**
     * Crea un nuevo demandate.
     *
     * @return void
     */
    function nuevo_demandate() {

        $this->form_validation->set_rules($this->demandante->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            $demandante = null;
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $demandante = $_POST;
            } else {
                $demandante = $this->demandante->valoresPorDefecto();
            }

            $tipo_doc = getListTipoDoc();

            $data = array(
                'titulo' => 'Nuevo Demandante',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'demandante' => $demandante,
                'tipo_doc' => $tipo_doc,
                'seleccionar' => 'causas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('intervinientes/form_demandate');
            $this->load->view('templates/footer');
        } else {

            $this->demandante->setAttributes($this->input);
            $this->demandante->id = null;
            $this->demandante->save();

            $this->causa_x_demandante->causaId = $this->datoscausa['id'];
            $this->causa_x_demandante->demandanteId = $this->demandante->id;
            $this->causa_x_demandante->save();

            set_message(array('1' => 'Se ha agregado un nuevo demandante: "' . $this->demandante->nombre . ' ' . $this->demandante->apellido . '".'));

            redirect('causas/intervinientes/');
        }
    }

    /**
     * Edita un demandate.
     *
     * @param integer $id El ID del demandate para editar.
     * @return void
     */
    function editar_demandante($id = '') {

        if ($this->demandante->get((int) $id)) {

            $this->form_validation->set_rules($this->demandante->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $demandante = $_POST;
                } else {
                    $demandante = $this->demandante->doArray();
                }

                $tipo_doc = array_merge((array) 'Seleccione tipo de documento', getListTipoDoc());

                $data = array(
                    'titulo' => 'Editar Demandante',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'demandante' => $demandante,
                    'tipo_doc' => $tipo_doc,
                    'seleccionar' => 'causas',
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/form_demandate');
                $this->load->view('templates/footer');
            } else {
                $_POST['id'] = $this->demandante->id;
                $this->demandante->setAttributes($this->input);
                $this->demandante->save();

                set_message(array('1' => 'Se ha editado el demandante: "' . $this->demandante->nombre . ' ' . $this->demandante->apellido . '".'));

                redirect('causas/intervinientes/');
            }
        } else {
            redirect('causas/intervinientes/');
        }
    }

    /**
     * Elimina un demandate.
     *
     * @param integer $id El ID del demandate a eliminar.
     * @return void
     */
    function eliminar_demandante($id = '') {

        if ($this->demandante->get((int) $id)) {
            $this->causa_x_demandante->getPorDemandanteId((int) $id);
            $this->causa_x_demandante->delete();

            $this->demandante->delete();

            set_message(array('1' => 'Se ha eliminado el demandante: "' . $this->demandante->nombre . ' ' . $this->demandante->apellido . '".'));
        }

        redirect('causas/intervinientes/');
    }

    /**
     * Crea un nuevo demandado no medico.
     *
     * @return void
     */
    function nuevo_demandado_no_medico() {

        $this->form_validation->set_rules($this->demandado_no_medico->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            $demandado_no_medico = null;
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $demandado_no_medico = $_POST;
            } else {
                $demandado_no_medico = $this->demandado_no_medico->valoresPorDefecto();
            }

            $sexo[''] = 'Seleccione un sexo';
            $sexo['m'] = 'Masculino';
            $sexo['f'] = 'Femenino';

            $especialidad_no_medica_array = $this->especialidad_no_medica->getList();

            $especialidad_no_medica[''] = 'Seleccione una Especialidad';

            foreach ($especialidad_no_medica_array as $value) {
                $especialidad_no_medica[$value->id] = $value->nombre;
            }

            $data = array(
                'titulo' => 'Nuevo Demandado No Médico',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'especialidad_no_medica' => $especialidad_no_medica,
                'sexo' => $sexo,
                'demandado_no_medico' => $demandado_no_medico,
                'seleccionar' => 'causas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('intervinientes/form_demandado_no_medico');
            $this->load->view('templates/footer');
        } else {

            $_POST['fechaNacimiento'] = normal_to_database_date($_POST['fechaNacimiento']);
            $this->demandado_no_medico->setAttributes($this->input);
            $this->demandado_no_medico->id = null;
            $this->demandado_no_medico->save();


            $this->causa_x_no_medico->causaId = $this->datoscausa['id'];
            $this->causa_x_no_medico->demandadoNoMedicoId = $this->demandado_no_medico->id;
            $this->causa_x_no_medico->save();

            set_message(array('1' => 'Se ha agregado un nuevo demandado No Médico: "' . $this->demandado_no_medico->nombre . ' ' . $this->demandado_no_medico->apellido . '".'));

            redirect('causas/intervinientes/');
        }
    }

    /**
     * Edita un demandado no medico.
     *
     * @param integer $id El ID del demandado no medico para editar.
     * @return void
     */
    function editar_demandado_no_medico($id = '') {

        if ($this->demandado_no_medico->get((int) $id)) {

            $this->form_validation->set_rules($this->demandado_no_medico->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $demandado_no_medico = $_POST;
                } else {
                    $demandado_no_medico = $this->demandado_no_medico->doArray();
                }


                $sexo[''] = 'Seleccione un sexo';
                $sexo['m'] = 'Masculino';
                $sexo['f'] = 'Femenino';

                $especialidad_no_medica_array = $this->especialidad_no_medica->getList();

                $especialidad_no_medica[''] = 'Seleccione una Especialidad';

                foreach ($especialidad_no_medica_array as $value) {
                    $especialidad_no_medica[$value->id] = $value->nombre;
                }

                $data = array(
                    'titulo' => 'Editar Demandado No Médico',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'especialidad_no_medica' => $especialidad_no_medica,
                    'sexo' => $sexo,
                    'demandado_no_medico' => $demandado_no_medico,
                    'seleccionar' => 'causas',
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/form_demandado_no_medico');
                $this->load->view('templates/footer');
            } else {
                $_POST['id'] = $this->demandado_no_medico->id;
                $_POST['fechaNacimiento'] = normal_to_database_date($_POST['fechaNacimiento']);
                $this->demandado_no_medico->setAttributes($this->input);
                $this->demandado_no_medico->save();

                set_message(array('1' => 'Se ha editado un demandado No Médico: "' . $this->demandado_no_medico->nombre . ' ' . $this->demandado_no_medico->apellido . '".'));

                redirect('causas/intervinientes/');
            }
        } else {
            redirect('causas/intervinientes/');
        }
    }

    /**
     * Elimina un demandado no medico.
     *
     * @param integer $id El ID del demandado no medico a eliminar.
     * @return void
     */
    function eliminar_demandado_no_medico($id = '') {

        if ($this->demandado_no_medico->get((int) $id)) {
            $this->causa_x_no_medico->getPorDemandadoNoMedicoId((int) $id);
            $this->causa_x_no_medico->delete();

            $this->demandado_no_medico->delete();

            set_message(array('1' => 'Se ha eliminado el demandado No Médico: "' . $this->demandado_no_medico->nombre . ' ' . $this->demandado_no_medico->apellido . '".'));
        }

        redirect('causas/intervinientes/');
    }

    /**
     * Listado de las intervinientes.
     *
     * @return void
     */
    function buscar_establecimiento() {

        $establecimientos = $this->establecimiento->getListPorCausaId($this->datoscausa['id']);

        $establecimientos_agregados = Array();
        foreach ($establecimientos as $establecimiento) {
            $establecimientos_agregados[] = $establecimiento->id;
        }

        $data = array(
            'titulo' => 'Lista de Establecimientos',
            'datosusuario' => $this->datosusuario,
            'datoscausa' => $this->datoscausa,
            'establecimientos_agregados' => $establecimientos_agregados,
            'establecimientos' => $this->establecimiento->getList(),
            'seleccionar' => 'causas',
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('intervinientes/buscar_establecimiento', $data);
        $this->load->view('templates/footer');
    }

    /**
     * Crea un nuevo establecimiento.
     *
     * @return void
     */
    function nuevo_establecimiento($id = '') {

        if ($this->establecimiento->get((int) $id)) {
            $this->causa_x_establecimiento->causaId = $this->datoscausa['id'];
            $this->causa_x_establecimiento->establecimientoId = $this->establecimiento->id;
            $this->causa_x_establecimiento->save();

            set_message(array('1' => 'Se ha agregado un nuevo establecimiento: "' . $this->establecimiento->nombre . '".'));

            redirect('causas/intervinientes/');
        } else {
            $this->form_validation->set_rules($this->establecimiento->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                $establecimiento = null;
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $establecimiento = $_POST;
                } else {
                    $establecimiento = $this->establecimiento->valoresPorDefecto();
                }

                $data = array(
                    'titulo' => 'Nuevo Establecimiento',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'establecimiento' => $establecimiento,
                    'entidades' => getListEntidades(),
                    'seleccionar' => 'causas',
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/form_establecimiento');
                $this->load->view('templates/footer');
            } else {
                $this->establecimiento->setAttributes($this->input);
                $this->establecimiento->id = null;
                $this->establecimiento->save();

                $this->causa_x_establecimiento->causaId = $this->datoscausa['id'];
                $this->causa_x_establecimiento->establecimientoId = $this->establecimiento->id;
                $this->causa_x_establecimiento->save();

                set_message(array('1' => 'Se ha agregado un nuevo establecimiento: "' . $this->establecimiento->nombre . '".'));

                redirect('causas/intervinientes/');
            }
        }
    }

    /**
     * Edita un establecimiento.
     *
     * @param integer $id El ID del establecimiento para editar.
     * @return void
     */
    function editar_establecimiento($id = '') {

        if ($this->establecimiento->get((int) $id)) {

            $this->form_validation->set_rules($this->establecimiento->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $establecimiento = $_POST;
                } else {
                    $establecimiento = $this->establecimiento->doArray();
                }

                $data = array(
                    'titulo' => 'Editar Establecimiento',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'establecimiento' => $establecimiento,
                    'entidades' => getListEntidades(),
                    'seleccionar' => 'causas',
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/form_establecimiento');
                $this->load->view('templates/footer');
            } else {
                $_POST['id'] = $this->establecimiento->id;
                $this->establecimiento->setAttributes($this->input);
                $this->establecimiento->save();

                set_message(array('1' => 'Se ha editado el establecimiento: "' . $this->establecimiento->nombre . '".'));

                redirect('causas/intervinientes/');
            }
        } else {
            redirect('causas/intervinientes/');
        }
    }

    /**
     * Elimina un establecimiento.
     *
     * @param integer $id El ID del establecimiento a eliminar.
     * @return void
     */
    function eliminar_establecimiento($id = '') {

        if ($this->causa_x_establecimiento->getPorEstablecimientoIdcausaId((int) $id, $this->datoscausa['id'])) {
            $this->causa_x_establecimiento->delete();

            set_message(array('1' => 'Se ha eliminado el establecimiento de la causa.'));
        }

        redirect('causas/intervinientes/');
    }

    function buscar_abogado_demandante() {
        $abogados_demandantes = array();
        $abogados_demandantes_agregados = Array();
        if (isset($_POST['submit'])) {
            $where = array();
            if ($this->input->post('tomo') != '') {
                $where['tomo'] = $this->input->post('tomo');
            }
            if ($this->input->post('folio') != '') {
                $where['folio'] = $this->input->post('folio');
            }
            if ($this->input->post('deptoJudicial') != 0) {
                $where['deptoJudicial'] = $this->input->post('deptoJudicial');
            }
            if ($this->input->post('nombre') != '') {
                $where['nombre like'] = '%' . $this->input->post('nombre') . '%';
            }
            if ($this->input->post('apellido') != '') {
                $where['apellido like'] = '%' . $this->input->post('apellido') . '%';
            }

            $abogados_demandantes = $this->abogado_demandante->getList($where);

            $abogados_demandantes_x_causa = $this->abogado_demandante->getListPorCausaId($this->datoscausa['id']);

            foreach ($abogados_demandantes_x_causa as $abogado_demandante) {
                $abogados_demandantes_agregados[] = $abogado_demandante->id;
            }
        }

        $data = array(
            'titulo' => 'Lista de Abogados Demandantes',
            'datosusuario' => $this->datosusuario,
            'datoscausa' => $this->datoscausa,
            'abogados_demandantes_agregados' => $abogados_demandantes_agregados,
            'abogados_demandantes' => $abogados_demandantes,
            'deptos_judiciales' => array_merge((array) 'Seleccione un Depto Judicial', getListDeptosJudiciales()),
            'seleccionar' => 'causas',
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('intervinientes/buscar_abogado_demandante', $data);
        $this->load->view('templates/footer');
    }

    /**
     * Crea un nuevo abogado demandante.
     * 
     * @return void
     */
    function nuevo_abogado_demandante($id = '') {

        if ($this->abogado_demandante->get((int) $id)) {
            $abogado_demandante = $this->abogado_demandante->doArray();
            $selecciono = true;
        } else {
            $abogado_demandante = $this->abogado_demandante->valoresPorDefecto();
            $selecciono = false;
        }

        $this->form_validation->set_rules($this->abogado_demandante->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $abogado_demandante = $_POST;
            } else {
                $abogado_demandante = array_merge($abogado_demandante, $this->causa_x_abogado_demandante->valoresPorDefecto());
            }

            $estudios_demandante_array = $this->estudio_demandante->getList();

            $estudios_demandante[''] = 'Seleccione un Estudio';

            foreach ($estudios_demandante_array as $value) {
                $estudios_demandante[$value->id] = $value->nombre;
            }

            $deptos_judiciales = array_merge((array) 'Seleccione un Depto Judicial', getListDeptosJudiciales());

            $data = array(
                'titulo' => 'Nuevo Abogado Demandante',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'estudios_demandante' => $estudios_demandante,
                'deptos_judiciales' => $deptos_judiciales,
                'abogado_demandante' => $abogado_demandante,
                'seleccionar' => 'causas',
                'selecciono' => $selecciono,
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('intervinientes/form_abogado_demandante');
            $this->load->view('templates/footer');
        } else {
            if (!isset($this->abogado_demandante->id)) {
                $this->abogado_demandante->setAttributes($this->input);
                $this->abogado_demandante->save();
            }

            $this->causa_x_abogado_demandante->setAttributes($this->input);
            $this->causa_x_abogado_demandante->causaId = $this->datoscausa['id'];
            $this->causa_x_abogado_demandante->abogadoDemandanteId = $this->abogado_demandante->id;
            $this->causa_x_abogado_demandante->save();

            set_message(array('1' => 'Se ha agregado un nuevo abogado demandante: "' . $this->abogado_demandante->nombre . ' ' . $this->abogado_demandante->apellido . '".'));

            redirect('causas/intervinientes/');
        }
    }

    /**
     * Edita un abogado demandante.
     *
     * @param integer $id El ID del abogado demandante para editar.
     * @return void
     */
    function editar_abogado_demandante($id = '') {

        if ($this->abogado_demandante->get((int) $id)) {
            $this->causa_x_abogado_demandante->getPorAbogadoDemandanteIdcausaId($this->abogado_demandante->id, $this->datoscausa['id']);

            $this->form_validation->set_rules($this->abogado_demandante->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $abogado_demandante = $_POST;
                } else {
                    $abogado_demandante = array_merge($this->abogado_demandante->doArray(), $this->causa_x_abogado_demandante->doArray());
                }

                $estudios_demandante_array = $this->estudio_demandante->getList();

                $estudios_demandante[''] = 'Seleccione un Estudio';

                foreach ($estudios_demandante_array as $value) {
                    $estudios_demandante[$value->id] = $value->nombre;
                }

                $deptos_judiciales = array_merge((array) 'Seleccione un Depto Judicial', getListDeptosJudiciales());

                $data = array(
                    'titulo' => 'Editar Abogado Demandante',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'estudios_demandante' => $estudios_demandante,
                    'deptos_judiciales' => $deptos_judiciales,
                    'abogado_demandante' => $abogado_demandante,
                    'seleccionar' => 'causas',
                    'selecciono' => true,
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/form_abogado_demandante');
                $this->load->view('templates/footer');
            } else {
                $_POST['id'] = $this->causa_x_abogado_demandante->id;
                $_POST['causaId'] = $this->causa_x_abogado_demandante->causaId;
                $_POST['abogadoDemandanteId'] = $this->causa_x_abogado_demandante->abogadoDemandanteId;

                $this->causa_x_abogado_demandante->setAttributes($this->input);
                $this->causa_x_abogado_demandante->save();

                set_message(array('1' => 'Se ha editado el abogado demandante: "' . $this->abogado_demandante->nombre . ' ' . $this->abogado_demandante->apellido . '".'));

                redirect('causas/intervinientes/');
            }
        } else {
            redirect('causas/intervinientes/');
        }
    }

    /**
     * Elimina un abogado demandante.
     *
     * @param integer $id El ID del abogado demandante a eliminar.
     * @return void
     */
    function eliminar_abogado_demandante($id = '') {

        if ($this->causa_x_abogado_demandante->getPorAbogadoDemandanteIdCausaId($id, $this->datoscausa['id'])) {

            $this->causa_x_abogado_demandante->delete();

            set_message(array('1' => 'Se ha eliminado el abogado demandante.'));
        }

        redirect('causas/intervinientes/');
    }

    function buscar_demandado_medico() {
        $medico = array();
        $demandados_agregados = Array();
        if (isset($_POST['submit'])) {
            $where = array();
            if ($this->input->post('matricula') != '') {
                $where['matricula'] = $this->input->post('matricula');
            }
            if ($this->input->post('numeroDoc') != '') {
                $where['numeroDoc'] = $this->input->post('numeroDoc');
            }
            if ($this->input->post('nombre') != '') {
                $where['nombre like'] = '%' . $this->input->post('nombre') . '%';
            }

            $medico = $this->medico->getList($where);

            $demandados = $this->demandado->getList(array('causaId' => $this->datoscausa['id']));

            foreach ($demandados as $demandado) {
                $demandados_agregados[] = $demandado->matricula;
            }
        }


        $data = array(
            'titulo' => 'Lista de Médicos',
            'datosusuario' => $this->datosusuario,
            'datoscausa' => $this->datoscausa,
            'demandados_agregados' => $demandados_agregados,
            'medicos' => $medico,
            'seleccionar' => 'causas',
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('intervinientes/buscar_demandado_medico', $data);
        $this->load->view('templates/footer');
    }

    /**
     * Crea un nuevo abogado demandante.
     * 
     * @return void
     */
    function nuevo_demandado_medico($matricula = '') {

        if ($this->medico->get((int) $matricula)) {
            $medico = $this->medico;
        } else {
            redirect('causas/intervinientes/');
        }

        $this->form_validation->set_rules($this->demandado->getValidacion());
        if ($this->form_validation->run() === FALSE) {
            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $demandado = $_POST;
            } else {
                $demandado = $this->demandado->valoresPorDefecto();
                $demandado['estudioId'] = $this->datosusuario['estudioId'];
            }

            $especialidad_array = $this->especialidad->getList(array(), array('descripcion' => 'ASC'));

            $especialidades[''] = 'Selecciones una Especialidad';

            foreach ($especialidad_array as $value) {
                $especialidades[$value->id] = $value->descripcion . ' (' . $value->nombre . ')';
            }

            $seguro_array = $this->seguro->getList();

            $seguros[''] = 'No tiene';

            foreach ($seguro_array as $value) {
                $seguros[$value->id] = $value->nombre . ' - ' . $value->empresa;
            }

            $estudio_array = $this->estudio->getList();

            $estudios[''] = 'Selecciones un Estudio';

            foreach ($estudio_array as $value) {
                $estudios[$value->id] = $value->nombre;
            }

            $this->causa->get($this->datoscausa[id]);
            $fechaActo = explode(' ', $this->causa->fechaInicio);
            $data = array(
                'titulo' => 'Nuevo Demandado Médico',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'fechaActo' => $fechaActo[0],
                'demandado' => $demandado,
                'medico' => $medico,
                'seguros' => $seguros,
                'estudios' => $estudios,
                'especialidades' => $especialidades,
                'seleccionar' => 'causas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('intervinientes/form_demandado_medico');
            $this->load->view('templates/footer');
        } else {
            $this->load->model('m_logs', 'logs');
            $_POST['fecha'] = normal_to_database_date($_POST['fecha']);

            $this->demandado->setAttributes($this->input);
            $this->demandado->id = null;
            $this->demandado->matricula = $medico->matricula;
            $this->demandado->causaId = $this->datoscausa['id'];
            $this->demandado->save();

            $this->demandado->logs('nuevo', $this->datosusuario['id'], $this->logs);

            $this->demandado_x_estudio->id = null;
            $this->demandado_x_estudio->estudioId = $_POST['estudioId'];
            $this->demandado_x_estudio->demandadoId = $this->demandado->id;
            $this->demandado_x_estudio->estado = 1;
            $this->demandado_x_estudio->fecha = normal_to_database_date(gmdate('d/m/Y'));
            $this->demandado_x_estudio->save();

            set_message(array('1' => 'Se ha agregado un nuevo Demandado Médico: "' . $this->medico->nombre . ' ' . $this->medico->apellido . '".'));

            redirect('causas/intervinientes/');
        }
    }

    /**
     * Edita un abogado demandante.
     *
     * @param integer $id El ID del abogado demandante para editar.
     * @return void
     */
    function editar_demandado_medico($id = '') {

        if ($this->demandado->get((int) $id)) {
            $this->medico->get($this->demandado->matricula);
            $medico = $this->medico;

            $this->form_validation->set_rules($this->demandado->getValidacion());
            if ($this->form_validation->run() === FALSE) {
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $demandado = $_POST;
                } else {
                    $demandado = $this->demandado->doArray();
                    $demandado['fecha'] = database_to_normal_date($demandado['fecha']);
                    $demandado['estudioId'] = 'set';
                }

                $medico_x_especialidad_array = $this->especialidad->getList();

                $especialidades = Array();

                foreach ($medico_x_especialidad_array as $value) {
                    $especialidades[$value->id] = $value->descripcion . ' (' . $value->nombre . ')';
                }

                if ($demandado['especialidadId'] == '') {
                    $demandado['especialidadId'] = $medico_x_especialidad_array[0]->espacialidadId;
                }

                $seguro_array = $this->seguro->getList();

                $seguros[''] = 'No tiene';

                foreach ($seguro_array as $value) {
                    $seguros[$value->id] = $value->nombre . ' - ' . $value->empresa;
                }


                $this->causa->get($this->datoscausa[id]);
                $fechaActo = explode(' ', $this->causa->fechaInicio);

                $data = array(
                    'titulo' => 'Ver / Editar Demandado Médico',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'demandado' => $demandado,
                    'fechaActo' => $fechaActo[0],
                    'medico' => $medico,
                    'seguros' => $seguros,
                    'especialidades' => $especialidades,
                    'seleccionar' => 'causas',
                    'edit' => true,
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/form_demandado_medico');
                $this->load->view('templates/footer');
            } else {
                $this->load->model('m_logs', 'logs');
                $_POST['id'] = $this->demandado->id;
                $_POST['fecha'] = normal_to_database_date($_POST['fecha']);

                $this->demandado->setAttributes($this->input);
                $this->demandado->matricula = $medico->matricula;
                $this->demandado->causaId = $this->datoscausa['id'];
                $this->demandado->save();

                $this->demandado->logs('actualizar', $this->datosusuario['id'], $this->logs);

                set_message(array('1' => 'Se ha editado el Demandado Médico: "' . $this->medico->nombre . ' ' . $this->medico->apellido . '".'));

                redirect('causas/intervinientes/');
            }
        } else {
            redirect('causas/intervinientes/');
        }
    }

    /**
     * Elimina un abogado demandante.
     *
     * @param integer $id El ID del abogado demandante a eliminar.
     * @return void
     */
    function eliminar_demandado_medico($id = '') {

        if ($this->demandado->get((int) $id)) {
            $this->load->model('m_logs', 'logs');
            $this->demandado_x_estudio->getPorDemandadoId($this->demandado->id);

            $this->demandado_x_estudio->delete();
            $this->demandado->logs('eliminar', $this->datosusuario['id'], $this->logs);
            $this->demandado->delete();

            set_message(array('1' => 'Se ha eliminado el Demandado Médico.'));
        }

        redirect('causas/intervinientes/');
    }

    /**
     * Elimina un abogado demandante.
     *
     * @param integer $id El ID del abogado demandante a eliminar.
     * @return void
     */
    function cambio_estudio($id = '') {

        if ($this->demandado_x_estudio->get((int) $id)) {
            $this->demandado->get($this->demandado_x_estudio->demandadoId);
            $this->medico->get($this->demandado->matricula);

            $this->form_validation->set_rules(array('field' => 'estudioId', 'label' => 'Estudio', 'rules' => 'date|required'));
            if ($this->form_validation->run() === FALSE) {
                if (isset($_POST['submit'])) {
                    set_message(array('3' => validation_errors()));
                    $demandado_x_estudio = $_POST;
                } else {
                    $demandado_x_estudio = array('estudioId' => $this->demandado_x_estudio->estudioId);
                }

                $estudio_array = $this->estudio->getList();

                foreach ($estudio_array as $value) {
                    $estudios[$value->id] = $value->nombre;
                }

                $data = array(
                    'titulo' => 'Cambio de Estudio',
                    'datosusuario' => $this->datosusuario,
                    'datoscausa' => $this->datoscausa,
                    'medico' => $this->medico,
                    'demandado_x_estudio' => $demandado_x_estudio,
                    'estudios' => $estudios,
                    'seleccionar' => 'causas',
                );

                $this->load->view('templates/header', $data);
                $this->load->view('templates/topbar');
                $this->load->view('causas/leftbarcausa');
                $this->load->view('intervinientes/cambio_estudio');
                $this->load->view('templates/footer');
            } else {
                $estudioId = $this->input->post('estudioId');
                if ($estudioId != $this->demandado_x_estudio->estudioId) {
                    $this->demandado_x_estudio->estado = 0;
                    $this->demandado_x_estudio->save();

                    $this->demandado_x_estudio->id = null;
                    $this->demandado_x_estudio->estudioId = $estudioId;
                    $this->demandado_x_estudio->estado = 1;
                    $this->demandado_x_estudio->fecha = normal_to_database_date(gmdate('d/m/Y'));
                    $this->demandado_x_estudio->save();
                }

                set_message(array('1' => 'Se ha cambiado de estudio al Demandado Médico: "' . $this->medico->nombre . ' ' . $this->medico->apellido . '".'));

                redirect('causas/intervinientes/');
            }
        } else {
            redirect('causas/intervinientes/');
        }
    }

}

